/**
 * @author ChaP
 * @date 2019/04/18
 * @describe:
 */
package CodingTest.AC20190418;

import java.util.HashMap;
import java.util.HashSet;

/**
 * leetcode - 383
 * 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串，判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成，返回 true ；否则返回 false。

 (题目说明：为了不暴露赎金信字迹，要从杂志上搜索各个需要的字母，组成单词来表达意思。)

 注意：

 你可以假设两个字符串均只含有小写字母。

 canConstruct("a", "b") -> false
 canConstruct("aa", "ab") -> false
 canConstruct("aa", "aab") -> true
 */
public class canConstruct {
    //方法一：
    public boolean canCaonstrut(String ransomNote,String magazine){
        int x[] = new int [26];
        int y[] = new int [26];
        for(int i=0;i<ransomNote.length();i++){
            x[ransomNote.charAt(i) - 'a']++;
        }
        for(int i=0;i<magazine.length();i++){
            y[ magazine.charAt(i) - 'a']++;
        }
        for(int k =0;k<26;k++){
            if(x[k] > y[k])
                return false;
        }return true;}




    public static void main(String[] args) {
        String a = "aa";
        String b = "ab";
        canConstruct cc = new canConstruct();
        System.out.println(cc.canCaonstrut(a,b));
    }
}
